package psmanager.db.types;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Osoba {
	
	public static final int TIP_ZATVORENIK = 0;
	public static final int TIP_ČUVAR = 1;
	public static final int TIP_DOKTOR = 2;

	private String ime;
	private String prezime;
	private Date rodjen;
	private Adresa prebivaliste;
	private String jmbg;
	private Dosje dosje;
	private MedicinskiKarton medKarton;
	
	public Osoba(String jmbg) {
		this.jmbg = jmbg;
	}

	public Osoba(String ime, String prezime, String jmbg, Adresa prebivaliste,
			Date rodjen, MedicinskiKarton medKarton, Dosje dosje) {
		this.dosje = dosje;
		this.ime = ime;
		this.jmbg = jmbg;
		this.medKarton = medKarton;
		this.prebivaliste = prebivaliste;
		this.prezime = prezime;
		this.rodjen = rodjen;
	}

	public void postaviDoktora(Doktor dok) {
		if (this.medKarton == null)
			this.medKarton = new MedicinskiKarton();
		this.medKarton.setOdgDoktor(dok);
	}

	public void dodajPrekrsaj(KriminalnaRadnja prekrsaj) {
		if (this.dosje == null) {
			this.dosje = new Dosje();
			this.dosje.setDatumOtvaranja(new Date());
		}
		this.dosje.dodajPrijestup(prekrsaj);
	}

	public void dodajPreboljeno(Bolest oboljenje) {
		if (this.medKarton == null) {
			this.medKarton = new MedicinskiKarton();
		}
		this.medKarton.dodajNovuBolest(oboljenje);
	}

	public void dodajOboljenje(Bolest oboljenje) {
		if (this.medKarton == null) {
			this.medKarton = new MedicinskiKarton();
		}
		this.medKarton.dodajPreboljeno(oboljenje);
	}

	public String getIme() {
		return ime;
	}

	public void setIme(String ime) {
		this.ime = ime;
	}

	public String getPrezime() {
		return prezime;
	}

	public void setPrezime(String prezime) {
		this.prezime = prezime;
	}

	public Date getRodjen() {
		return rodjen;
	}

	public void setRodjen(Date rodjen) {
		this.rodjen = rodjen;
	}

	public Adresa getPrebivaliste() {
		return prebivaliste;
	}

	public void setPrebivaliste(Adresa prebivaliste) {
		this.prebivaliste = prebivaliste;
	}

	public String getJmbg() {
		return jmbg;
	}

	public void setJmbg(String jmbg) {
		this.jmbg = jmbg;
	}

	public Dosje getDosje() {
		return dosje;
	}

	public void setDosje(Dosje dosje) {
		this.dosje = dosje;
	}

	public MedicinskiKarton getMedKarton() {
		return medKarton;
	}

	public void setMedKarton(MedicinskiKarton medKarton) {
		this.medKarton = medKarton;
	}
	
	public int calculateAge() {
		Calendar current = new GregorianCalendar();
		Calendar cal = Calendar.getInstance();
		cal.setTime(rodjen);
		cal.setTimeInMillis(current.getTimeInMillis()-cal.getTimeInMillis());
		return cal.get(Calendar.YEAR)-1970;
	}

}
